import java.util.*;

/**
 * @author LKQ
 * @date 2022/5/21 14:46
 * @description 递推优化
 */
public class Solution2 {
    public static void main(String[] args) {

    }
    public int longestSubarray(int[] nums) {
        int n = nums.length;
        // p0 以第i位结束的最长连续全1子数组， p1为 以第i位结束，可以在某个位置删除一个0的最长连续全1子数组
        int p0 = 0, p1 = 0, ans = 0;
        for (int num: nums) {
            if (num == 0) {
                p1 = p0;
                p0 = 0;
            }else {
                p1++;
                p0++;
            }
            ans = Math.max(ans, p1);
        }
        if (ans == n) {
            ans--;
        }
        return ans;
    }
}
